home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / PASCAL / ALLSWAGS.ZIP / SWAGN-R.ZIP / NETWORK.SWG / 0035_Netware 3.11 API Library - NetBind.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-11-29  |  8.0 KB  |  229 lines

  1. {
  2.             ╔══════════════════════════════════════════════════╗
  3.             ║     ┌╦═══╦┐┌╦═══╦┐┌╦═══╦┐┌╦═╗ ╦┐┌╦═══╦┐┌╔═╦═╗┐   ║
  4.             ║     │╠═══╩┘├╬═══╬┤└╩═══╦┐│║ ║ ║│├╬══      ║      ║
  5.             ║     └╩     └╩   ╩┘└╩═══╩┘└╩ ╚═╩┘└╩═══╩┘   ╩      ║
  6.             ║                                                  ║
  7.             ║     NetWare 3.11 API Library for Turbo Pascal    ║
  8.             ║                      by                          ║
  9.             ║                 S.Perevoznik                     ║
  10.             ║                     1996                         ║
  11.             ╚══════════════════════════════════════════════════╝
  12. }
  13.  
  14. Unit NetBind;
  15.  
  16. Interface
  17.  
  18. Uses NetConv;
  19.  
  20.  
  21.  
  22. Const
  23.  
  24.   OT_UNKNOWN                      = $00;
  25.   OT_USER                         = $01;
  26.   OT_USER_GROUP                   = $02;
  27.   OT_PRINT_QUEUE                  = $03;
  28.   OT_FILE_SERVER                  = $04;
  29.   OT_JOB_SERVER                   = $05;
  30.   OT_GATEWAY                      = $06;
  31.   OT_PRINT_SERVER                 = $07;
  32.   OT_ARCHIVE_QUEUE                = $08;
  33.   OT_ARCHIVE_SERVER               = $09;
  34.   OT_JOB_QUEUE                    = $0A;
  35.   OT_ADMINISTRATION               = $0B;
  36.  
  37.   OT_NAS_SNA_GATEWAY              = $21;  { }
  38.   OT_REMOTE_BRIDGE_SERVER         = $24;  { }
  39.   OT_TIME_SYNCHRONIZATION_SERVER  = $2D;  { }
  40.   OT_ARCHIVE_SERVER_DYNAMIC_SAP   = $2E;  { }
  41.   OT_ADVERTISING_PRINT_SERVER     = $47;  { }
  42.   OT_BTRIEVE_VAP                  = $4B;  { }
  43.   OT_PRINT_QUEUE_USER             = $53;  { }
  44.  
  45. Function ScanBinderyObject( searchObjectName : string;
  46.                             searchObjectType : word;
  47.                             Var objectID     : LongInt;
  48.                             Var objectName   : string;
  49.                             Var objectType   : word;
  50.                             Var objectHasProperties  : byte;
  51.                             Var objectFlag           : byte;
  52.                             Var objectSecurity       : byte ) : byte;
  53.  
  54. Function ScanProperty( ObjectName           : string;
  55.                        ObjectType           : word;
  56.                        SearchPropertyName   : string;
  57.                        Var SequenceNumber   : LongInt;
  58.                        Var PropertyName     : string;
  59.                        Var PropertyFlags    : byte;
  60.                        Var PropertySecurity : byte;
  61.                        Var PropertyHasValue : byte;
  62.                        Var MoreProperties   : byte) : byte;
  63.  
  64.  
  65. Function ReadPropertyValue(ObjectName       : string;
  66.                            ObjectType       : word;
  67.                            PropertyName     : string;
  68.                            SegmentNumber    : byte;
  69.                            Var PropertyValue: string;
  70.                            Var MoreSegments : byte;
  71.                            Var PropertyFlags: byte) : byte;
  72.  
  73. Implementation
  74.  
  75. Uses Dos;
  76.  
  77. Function ScanBinderyObject( searchObjectName : string;
  78.                             searchObjectType : word;
  79.                             Var objectID     : LongInt;
  80.                             Var objectName   : string;
  81.                             Var objectType   : word;
  82.                             Var objectHasProperties  : byte;
  83.                             Var objectFlag           : byte;
  84.                             Var objectSecurity       : byte ) : byte;
  85.  
  86.  var
  87.    r : registers;
  88.    SendPacket  : array[0..57] of byte;
  89.    ReplyPacket : array[0..59] of byte;
  90.    WordPtr     : ^word;
  91.    LongPtr     : ^longInt;
  92.  
  93. begin
  94.    SendPacket[2] := 55;
  95.    LongPtr  := addr(SendPacket[3]);
  96.    LongPtr^ := GetLong(addr(ObjectID));
  97.    WordPtr  := addr(SendPacket[7]);
  98.    WordPtr^ := GetWord(addr(SearchObjectType));
  99.    SendPacket[9] := Length(SearchObjectName);
  100.    move(SearchObjectName[1],SendPacket[10],Length(SearchObjectName));
  101.    WordPtr  := Addr(SendPacket);
  102.    WordPtr^ := Length(SearchObjectName) + 8;
  103.    WordPtr  := Addr(ReplyPacket);
  104.    WordPtr^ := 57;
  105.    r.AH := 227;
  106.    r.BX := r.DS;
  107.    r.DS := SEG(SendPacket);
  108.    r.SI := OFS(SendPacket);
  109.    r.ES := SEG(ReplyPacket);
  110.    r.DI := OFS(ReplyPacket);
  111.    intr($21,r);
  112.    ScanBinderyObject := r.AL;
  113.    r.DS := r.BX;
  114.    if r.AL = 0 then
  115.     begin
  116.       ObjectID   := GetLong(addr(ReplyPacket[2]));
  117.       ObjectType := GetWord(addr(ReplyPacket[6]));
  118.       move(ReplyPacket[8],ObjectName[1],48);
  119.       ObjectName[0]  := chr(48);
  120.       ObjectFlag     := ReplyPacket[56];
  121.       ObjectSecurity := ReplyPacket[57];
  122.       ObjectHasProperties := ReplyPacket[58];
  123.     end;
  124. end;
  125.  
  126. Function ScanProperty( ObjectName           : string;
  127.                        ObjectType           : word;
  128.                        SearchPropertyName   : string;
  129.                        Var SequenceNumber   : LongInt;
  130.                        Var PropertyName     : string;
  131.                        Var PropertyFlags    : byte;
  132.                        Var PropertySecurity : byte;
  133.                        Var PropertyHasValue : byte;
  134.                        Var MoreProperties   : byte) : byte;
  135.  
  136.  var
  137.    r : registers;
  138.    SendPacket  : array[0..57] of byte;
  139.    ReplyPacket : array[0..59] of byte;
  140.    WordPtr     : ^word;
  141.    LongPtr     : ^longInt;
  142.  
  143. begin
  144.    SendPacket[2] := 60;
  145.    WordPtr  := addr(SendPacket[3]);
  146.    WordPtr^ := GetWord(addr(ObjectType));
  147.    SendPacket[5] := Length(ObjectName);
  148.    move(ObjectName[1],SendPacket[6],Length(ObjectName));
  149.    LongPtr  := Addr(SendPacket[Length(ObjectName)+6]);
  150.    LongPtr^ := GetLong(addr(SequenceNumber));
  151.    SendPacket[Length(ObjectName) + 10] := Length(SearchpropertyName);
  152.    move(SearchPropertyName[1],SendPacket[Length(ObjectName) + 11],
  153.         Length(searchPropertyName));
  154.    WordPtr  := Addr(SendPacket);
  155.    WordPtr^ := Length(ObjectName) + Length(SearchPropertyName) + 9;
  156.    WordPtr  := Addr(ReplyPacket);
  157.    WordPtr^ := 26;
  158.    r.AH := 227;
  159.    r.BX := r.DS;
  160.    r.DS := SEG(SendPacket);
  161.    r.SI := OFS(SendPacket);
  162.    r.ES := SEG(ReplyPacket);
  163.    r.DI := OFS(ReplyPacket);
  164.    intr($21,r);
  165.    ScanProperty := r.AL;
  166.    r.DS := r.BX;
  167.    if r.AL = 0 then
  168.     begin
  169.       move(ReplyPacket[2],PropertyName[1],16);
  170.       PropertyName[0]  := chr(16);
  171.       PropertyFlags    := ReplyPacket[18];
  172.       PropertySecurity := ReplyPacket[19];
  173.       SequenceNumber   := GetLong(addr(ReplyPacket[20]));
  174.       PropertyHasValue := ReplyPacket[24];
  175.       MoreProperties   := ReplyPacket[25];
  176.     end;
  177. end;
  178.  
  179. Function ReadPropertyValue(ObjectName       : string;
  180.                            ObjectType       : word;
  181.                            PropertyName     : string;
  182.                            SegmentNumber    : byte;
  183.                            Var PropertyValue: string;
  184.                            Var MoreSegments : byte;
  185.                            Var PropertyFlags: byte) : byte;
  186.  var
  187.    r : registers;
  188.    SendPacket  : array[0..70] of byte;
  189.    ReplyPacket : array[0..132] of byte;
  190.    WordPtr     : ^word;
  191.    LongPtr     : ^longInt;
  192.    i           : byte;
  193. begin
  194.     SendPacket[2] := 61;
  195.     WordPtr  := addr(SendPacket[3]);
  196.     WordPtr^ := GetWord(addr(ObjectType));
  197.     SendPacket[5] := Length(ObjectName);
  198.     move(ObjectName[1],SendPacket[6],Length(ObjectName));
  199.     SendPacket[Length(ObjectName) + 6] := SegmentNumber;
  200.     SendPacket[Length(ObjectName) + 7] := Length(PropertyName);
  201.     move(PropertyName[1],SendPacket[Length(ObjectName) + 8],
  202.          Length(PropertyName));
  203.    WordPtr  := Addr(SendPacket);
  204.    WordPtr^ := Length(ObjectName) + Length(PropertyName) + 6;
  205.    WordPtr  := Addr(ReplyPacket);
  206.    WordPtr^ := 130;
  207.    r.AH := 227;
  208.    r.BX := r.DS;
  209.    r.DS := SEG(SendPacket);
  210.    r.SI := OFS(SendPacket);
  211.    r.ES := SEG(ReplyPacket);
  212.    r.DI := OFS(ReplyPacket);
  213.    intr($21,r);
  214.    ReadPropertyValue := r.AL;
  215.    if r.AL = 0 then
  216.     begin
  217.       move(ReplyPacket[2],PropertyValue[1],128);
  218.       PropertyValue[0] := chr(128);
  219.       i := Pos(chr(0),PropertyValue);
  220.       PropertyValue[0] := chr(i);
  221.       MoreSegments  := ReplyPacket[130];
  222.       PropertyFlags := ReplyPacket[131];
  223.     end;
  224. end;
  225.  
  226.  
  227.  
  228. end.
  229.